package com.hakgc.rent.dao;


import com.hakgc.rent.entity.Street;

import java.util.List;

/**
 * 区县相关的数据库操作接口
 * @author Xing.Jiejian
 * @date 2020/10/16
 */
public interface StreetDao {
    /**
     * 保存(新增)区县
     * @param street 待保存对象
     * @return 保存成功or失败
     */
    boolean save(Street street);

    /**
     * 修改区县
     * @param street 待保存对象
     * @return 修改成功or失败
     */
    boolean update(Street street);

    /**
     * 根据主键删除区县
     * @param id 主键
     * @return 删除成功or失败
     */
    boolean deleteById(int id);

    /**
     * 根据主键查找区县对象
     * @param id 主键
     * @return 区县对象
     */
    Street findById(int id);

    /**
     * 查找所有的街道信息
     * @return 街道的集合
     */
    List<Street> findAll();

    /**
     * 查询所有的街道信息（关联区县信息）
     * @return 关联了区县信息的街道
     */
    List<Street> findAllWithDistrict();

    /**
     * 根据区县编号查找所有街道
     * @param districtId 区县编号
     * @return 街道集合
     */
    List<Street> findByDistrictId(int districtId);

    /**
     * 根据分页参数查询街道集合
     * @param offset 偏移量
     * @param limit 最大显示数量
     * @return 区县集合
     */
    List<Street> findByLimit(int offset,int limit);

    /**
     * 获取分页街道集合
     * @param likeName 模糊查询的街道名
     * @param did 所在区县编号
     * @param offset 偏移量
     * @param limit 最大显示数量
     * @return 街道集合
     */
    List<Street> findByLimit(String likeName,int did, int offset,int limit);

    /**
     * 根据分页参数查询区县集合
     * @param pageNo 页码
     * @param pageSize 每页显示数量
     * @return 街道集合
     */
    List<Street> findByPage(int pageNo,int pageSize);

    /**
     * 获取区县总数量
     * @return 总记录数
     */
    int getAllCount();

    /**
     * 获取街道总数量
     * @param likeName 模糊查询的街道名
     * @param did 所在区县编号
     * @return 街道数量
     */
    int getCount(String likeName,int did);
}
